import java.util.Scanner;

public class Test_7_18_3 {
    public static void main(String[] args) {
        //过河卒
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();//B点坐标
        int x = in.nextInt();
        int y = in.nextInt();//马的坐标
        int[][] dp = new int[n+2][m+2];
        dp[0][1] = 1;
        x = x +1;
        y = y + 1;
        for (int i = 1; i <= n+1 ; i++) {
            for (int j = 1; j <= m + 1; j++) {
                if (i != x && j != y && (Math.abs(i-x)+Math.abs(j-y) == 3) || i == x && j == y){
                    dp[i][j] = 0;
                }else {
                    dp[i][j] = dp[i-1][j] + dp[i][j-1];
                }
            }
        }
        System.out.println(dp[n+1][m+1]);

        //以下代码没有考虑完全，当马的控制点出现在边界，那么与该点挨着的边界的值就没有正确，不再是1，而是0
//        if ((x == 0 && y == 0)||(x == 2 && y== 1)||(x == 1 && y == 2)){
//            System.out.println(0);
//        }
//        int max_w = Math.max(n,x);
//        int max_h = Math.max(m,y);
//        int[][] dp = new int[max_w + 1][max_h + 1];
//        for (int i = 0; i <= max_w; i++) {
//            for (int j = 0; j <= max_h; j++) {
//                if(i == 0 || j == 0){
//                    dp[i][j] = 1;
//                    if ((Math.abs(i - x) + Math.abs(j - y) == 3 && i != x && j != y)||(i==x&&j==y)){
//                        dp[i][j] = 0;
//                    }
//                }else {
//                    if((Math.abs(i - x) + Math.abs(j - y) == 3 && i != x && j != y)||(i==x&&j==y)){
//                        dp[i][j] = 0;
//                    }else {
//                        dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
//                    }
//                }
//
//            }
//        }
//        System.out.println(dp[n][m]);
    }
}
